package com.hyt.it.ogt.ykcj.service.grade;

import java.util.Date;
import java.util.List;

import com.hyt.it.ogt.ykcj.domain.exam.ExamPostInfo;
import com.hyt.it.ogt.ykcj.domain.grade.ServantExamineeInfo;
import com.hyt.it.ogt.ykcj.domain.grade.ServantExamineeSubjectGrade;
import com.hyt.it.ogt.ykcj.domain.vo.ExamScoreLineReq;
import com.hyt.it.ogt.ykcj.domain.vo.ExamScoreLineRsp;
import com.hyt.it.ogt.ykcj.domain.vo.HistoryExamReq;
import com.hyt.it.ogt.ykcj.domain.vo.HistoryScoreLineVo;
import com.hyt.it.ogt.ykcj.domain.vo.InterViewRsp;
import com.hyt.it.ogt.ykcj.domain.vo.InterviewRank;
import com.hyt.it.ogt.ykcj.domain.vo.JgxzVo;
import com.hyt.it.ogt.ykcj.domain.vo.PostScoreInfoVo;
import com.hyt.it.ogt.ykcj.domain.vo.ServantExamineeGradeImportVo;
import com.hyt.it.ogt.ykcj.domain.vo.ServantExamineeInfoVo;
import com.hyt.it.ogt.ykcj.domain.vo.UnitPostVo;

/**
 * 公务员考生信息Service接口
 * 
 * @author admin
 * @date 2021-09-09
 */
public interface IServantExamineeInfoService
{
    /**
     * 查询公务员考生信息
     *
     * @param id 公务员考生信息ID
     * @return 公务员考生信息
     */
    public ServantExamineeInfo selectServantExamineeInfoById(String id);

    /**
     * 查询公务员考生信息列表
     *
     * @param servantExamineeInfo 公务员考生信息
     * @return 公务员考生信息集合
     */
    public List<ServantExamineeInfo> selectServantExamineeInfoList(ServantExamineeInfo servantExamineeInfo);

    /**
     * 新增公务员考生信息
     *
     * @param servantExamineeInfo 公务员考生信息
     * @return 结果
     */
    public int insertServantExamineeInfo(ServantExamineeInfo servantExamineeInfo);

    /**
     * 修改公务员考生信息
     *
     * @param servantExamineeInfo 公务员考生信息
     * @return 结果
     */
    public int updateServantExamineeInfo(ServantExamineeInfo servantExamineeInfo);

    /**
     * 批量删除公务员考生信息
     *
     * @param ids 需要删除的公务员考生信息ID
     * @return 结果
     */
    public int deleteServantExamineeInfoByIds(String[] ids);

    /**
     * 删除公务员考生信息信息
     *
     * @param id 公务员考生信息ID
     * @return 结果
     */
    public int deleteServantExamineeInfoById(String id);

    /**
     * 删除公务员考生信息及成绩数据
     *
     * @param id 考生信息ID
     * @param subjectId 科目ID
     * @return 结果
     */
    Integer deleteExamineeGradeById(String id, String subjectId);

    /**
     * 获取公务员考生成绩信息分页列表
     *
     * @param servantExamineeInfoVo 公务员考生信息
     * @return 公务员考生信息集合
     */
    List<ServantExamineeInfoVo> selectExamineeGradePage(ServantExamineeInfoVo servantExamineeInfoVo);

    /**
     * 获取公务员考生成绩信息详细
     *
     * @param id 考生ID
     * @return 公务员考生信息
     */
    ServantExamineeInfoVo selectExamineeGradeById(String id);

    /**
     * 保存公务员考生成绩信息
     * @param servantExamineeInfoVo 公务员考生成绩信息
     * @return 结果
     * @throws Exception
     */
    Integer saveExamineeGrade(ServantExamineeInfoVo servantExamineeInfoVo) throws Exception;

    /**
     * 题型分数合并成单科总分
     * @param gradeList 题型分数集
     * @param grade 合并单科分数
     */
    void getSubjectGrade(List<ServantExamineeSubjectGrade> gradeList, ServantExamineeSubjectGrade grade);

    /**
     * 成绩归档
     * @param archivedStatus 归档状态
     * @param archivedDate 归档时间
     * @param examId 考试ID
     * @param ids 考生ID
     * @return 结果
     */
    Integer updateArchiveByIds(String archivedStatus, Date archivedDate, String examId, String ids);

    /**
     * 插入批量考生成绩(公务员)
     * @param list 考生成绩信息集
     * @return 结果
     */
    void insertBatchExamineeGrade(List<ServantExamineeGradeImportVo> list);

    /**
     * 下载成绩(公务员)
     * @param servantExamineeInfoVo 考试信息
     * @param isTemplate 是否下载模板（Y:是，N:否）
     * @return 结果
     */
    String downloadExamineeGradeList(ServantExamineeInfoVo servantExamineeInfoVo, String isTemplate);

    /**
     * 查询考试分数线
     * @param examScoreLineReq
     * @return
     */
    public ExamScoreLineRsp queryExamScoreLine(ExamScoreLineReq examScoreLineReq);

    /**
     * 查询单位下职位信息
     * @param examScoreLineReq
     * @return
     */
    public List<UnitPostVo> queryUnitPostInfo(ExamScoreLineReq examScoreLineReq);

    /**
     * 查询单位下分数线信息
     * @param examScoreLineReq
     * @return
     */
    public PostScoreInfoVo queryUnitScoreLine(ExamScoreLineReq examScoreLineReq);

    /**
     * 获取面试名单
     */
    public InterViewRsp getInterViewList(ExamScoreLineReq examScoreLineReq);

    /**
     * 获取机构性质
     */
    public List<JgxzVo> getJgxzList(String examId);

    /**
     * 获取面试考生排名
     * @param examScoreLineReq
     * @return
     */
    public List<InterviewRank> getInterviewRankList(ExamScoreLineReq examScoreLineReq, Integer rankingBaseNum);

    /**
     * 获取排名上方职位信息
     * @param examScoreLineReq
     * @return
     */
    public ExamPostInfo getPostInfo(ExamScoreLineReq examScoreLineReq);

    /**
     * 获得历史考试名称列表
     * @param historyExamReq
     * @return
     */
    List<HistoryScoreLineVo> getHistoryExamNameList(HistoryExamReq historyExamReq);


    /**
     * 获取历年职位分数线
     * @param examScoreLineReq
     * @return
     */
    List<HistoryScoreLineVo> getHistoryPostScoreLine(ExamScoreLineReq examScoreLineReq);

    /**
     * 更新考生面试和及格字段
     */
    public void updateInterViewAndQualifiedList();


}

